<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Pedido extends CI_Controller {

	public function __construct(){
		parent::__construct();
		$this->load->model('pedido_model','pedido');
		$this->load->model('cliente_model','cliente');
		$this->load->model('produto_model','produto');
		$this->load->model('alegro_model','alegro');
		//$this->load->model('itemPedido_model','itemPedido');
	}
	
	public function index(){
		
		if (!is_logado()) {
			redirect('alegro/login');
		} else {
			$this->listar();
		}
	}
	
	//LISTAR PEDIDOS
	public function listar(){
		if (!is_logado()) {
			redirect('alegro/login');
		} else {
			
			$this->session->unset_userdata('cliente_id');
			$this->session->unset_userdata('cliente_nome');
			
			/*
			 *	Tipo de Perfil
			 *	1 - Administrador
			 *	2 - Financeiro
			 *	3 - Comercial
			 *	4 - Representante
			 *	5 - Visitante 
			 */
			
			//if ( $this->session->userdata('perfil') == 'Administrador' ){
			if ( $this->session->userdata('perfil_id') == '1' ||
				 $this->session->userdata('perfil_id') == '2' ||
				 $this->session->userdata('perfil_id') == '3' ){
				$pedidos = $this->pedido->get_all();
			} else {
				$pedidos = $this->pedido->get_all_pedidos_by_vendedor($this->session->userdata('usuario_id'));
			}
			
			foreach ($pedidos as $pedido) {
				$pedido->cli_codigo = $this->cliente->get_byid_singem_alegropedido($pedido->cli_codigo);
			}
			
			$dados = array(
					'titulo' 			=> 'Pedidos',
					'subtitulo' 		=> 'Lista',
					'funcionalidade' 	=> 'Listagem avançada',
					'botaopadrao'		=> 'Adicionar Pedido',
					'modulo'			=> 'pedido',
					'tela' 				=> 'listar',
					'pedidos'			=> json_encode($pedidos),
			);
			
			$this->parser->parse('index', $dados);
		}
	}
	
	public function adicionarCliente(){
		if (!is_logado()) {
			redirect('alegro/login');
		} else {
			
			if ($this->session->userdata('cliente_id')){
				$this->session->unset_userdata('cliente_id');
				$this->session->unset_userdata('cliente_nome');
				$this->session->unset_userdata('cliente_tabela');
			}
			
			$dados = array(
					'titulo' 			=> 'Pedidos',
					'subtitulo' 		=> 'Adicionar',
					'funcionalidade' 	=> 'Selecionar Cliente',
					'botaopadrao'		=> 'Avançar',
					'botaovoltar'		=> 'Voltar',
					'modulo'			=> 'pedido',
					'tela' 				=> 'adicionarCliente',
					'clientes'			=> json_encode($this->cliente->get_all_clientes_by_perfil($this->session->userdata('codigo_singem'))),
			);
			
			$this->parser->parse('index', $dados);
		}
	}
	
	public function adicionarProduto(){
		if (!is_logado()) {
			redirect('alegro/login');
		} else {
			
			//$id = $this->uri->segment(3);
			if (!empty($this->input->post('id_cliente'))){
				$cliente = $this->cliente->get_byid($this->input->post('id_cliente'));
			} else {
				redirect(current_url());
			}
			
			if ($cliente == false) {
				//redirect('pedido/adicionarCliente');
				$cliente = $this->cliente->get_byid_alegro($this->input->post('id_cliente'));
				
				$cliente = array('cliente_id' 		=> $cliente->cli_codigo,
								 'cliente_nome' 	=> $cliente->cli_nome,
								 'cliente_tabela' 	=> 00);
				$tabela_preco = 00;
			} else {
				$tabela_preco = $cliente->Classificacao;
				$cliente = array('cliente_id' 		=> $cliente->Cliente, 
								 'cliente_nome' 	=> $cliente->Nome, 
								 'cliente_tabela' 	=> $cliente->Classificacao);
			}
			
			$this->session->set_userdata($cliente);
			
			$dados = array(
					'titulo' 			=> 'Pedidos',
					'subtitulo' 		=> 'Adicionar',
					'funcionalidade' 	=> 'Adicionar Produtos',
					'botaopadrao'		=> 'Finalizar Pedido',
					'botaolimpar'		=> 'Limpar',
					'botaovoltar'		=> 'Voltar',
					'modulo'			=> 'pedido',
					'tela' 				=> 'adicionarProduto',
					'produtos'			=> json_encode($this->produto->get_all_produtos_select_campos($tabela_preco)),
			);
			$this->parser->parse('index', $dados);
		}
	}
	
	public function adicionarPedido(){
		if (!is_logado()) {
			redirect('alegro/login');
		} else {
			$dados = json_decode($this->input->post('dados'));
			
// 			foreach ($dados->camposAdicionais as $campo){
// 				echo "Desconto: " . $campo->desconto;
// 				echo "Prazo: " . $campo->prazo;
// 				echo "Observacao: " . $campo->observacao;
// 			}
// 			exit;
			
			$pedido['ped_codigo'] = $this->alegro->sequence('tbl_sequence', 'seq_pedido');
			$pedido['cli_codigo'] = (int)$this->session->userdata('cliente_id');
			$pedido['usu_codigo'] = $this->session->userdata('usuario_id');
			$pedido['usu_vendedor_singem'] = $this->session->userdata('codigo_singem'); 
			$pedido['ped_emissao'] = DateTime_Now('usa');

			$pedido['ped_emisso'] = ($this->session->userdata('usuario')); // . " (".DateTime_Now('pt-br').")" );
//			$pedido['ped_documento'] = 0;
// 			$pedido['ped_comissao_vendedor'] = '';
// 			$pedido['ped_comissao_cliente'] = '';

			$pedido['ped_prioridade'] = 1;
			$pedido['ped_tabela'] = $this->session->userdata('cliente_tabela');
//			$pedido['ped_tipo_tp_recebimento'] = 0.00;
//			$pedido['ped_peso_bruto'] = '';
//			$pedido['ped_peso_liquido'] = '';
			$pedido['ped_desconto'] = $dados->camposAdicionais[0]->desconto;
			$pedido['ped_prazo'] = (int)$dados->camposAdicionais[0]->prazo;
			$pedido['ped_observacoes'] = $dados->camposAdicionais[0]->observacao;
			$pedido['ped_valor_total'] = $dados->camposAdicionais[0]->valor_total;
			
// 			$pedido['ped_cancelado'] = '';
// 			$pedido['ped_entrega'] = '';
			$pedido['ped_status_comercial'] = 0;
			$pedido['ped_status_financeiro'] = 0;
			$pedido['ped_status'] = 0;
			$pedido['ped_excluido'] = 0;
			
			if ($this->pedido->do_adicionar($pedido)){
				$array = $dados->produtos;
				
				foreach ($array as $obj){
					$produto['pro_codigo'] = $obj->id;
					$produto['ped_codigo'] = (int)$pedido['ped_codigo'];
					$produto['pro_quantidade'] = (int)$obj->qtd;
					$produto['pro_valor_unitario'] = (real)$obj->precoUnitario;
					$produto['pro_valor_total_produto'] = (real)$obj->precoTotal;
					$produto['pro_comissao_vendedor'] = $obj->comissao;
//					$produto['pro_comissao_cliente'] = $obj->comissao;
// 					$produto['pro_ipi'] = '';
					$produto['pro_status'] = 1;
					$produto['pro_excluido'] = 0;
					
					if ($this->produto->do_adicionar($produto) == FALSE){
						$status = FALSE;
						
						$this->produto->do_excluir($produto);
						
						$this->pedido->do_excluir($pedido->ped_codigo);
						
						break;
					} else {
						$status = TRUE;
					}
				}
				
				if ($status){
					$this->session->set_flashdata('adicionarok', 'Pedido Realizado com Sucesso!');
					$data['statusPedido'] = 1;
					$data['redirect'] = base_url('pedido/index');
				} else {
					$this->session->set_flashdata('adicionarok', 'Erro ao tentar inserir os produtos no pedido!');
					$data['statusPedido'] = 0;
				}
				
			} else {
				$this->session->set_flashdata('adicionarok', 'Erro ao tentar realizar o pedido!');
				$data['statusPedido'] = 0;
			}

 			$this->session->unset_userdata('cliente_id');
 			$this->session->unset_userdata('cliente_nome');
			
 			echo json_encode($data);
		}
	}
	
	/*
	 * Ficou em desuso
	 
	public function finalizarPedido(){
		if (!is_logado()) {
			redirect('alegro/login');
		} else {
			echo "entrou no finalizar pedido";
				
			$array = json_decode($this->input->post('produtos'));
			//$produtos = array();
				
			print_r($array);
				
			exit;
			foreach ($array as $obj){
				$result = $this->produto->get_byid_tabela_preco($obj->id, $this->session->userdata('cliente_tabela'));
				$result->quantidade = $obj->qtd;
				if ($result != FALSE){
					array_push($produtos, $result);
				}
			}
				
			$dados = array(
					'titulo' 			=> 'Pedidos',
					'subtitulo' 		=> 'Adicionar',
					'funcionalidade' 	=> 'Confirmar Pedido',
					'botaopadrao'		=> 'Confirmar Pedido',
					'botaolimpar'		=> 'Limpar',
					'botaovoltar'		=> 'Voltar',
					'modulo'			=> 'pedido',
					'tela' 				=> 'confirmarPedido',
					'produtos'			=> json_encode($produtos),
			);
			$this->parser->parse('index', $dados);
		}
	}
	*/
	
	public function detalharPedido(){
		if (!is_logado()) {
			redirect('alegro/login');
		} else {
			
			$id = $this->uri->segment(3);
			
			if ( !empty($id) && is_numeric($id) ){
				//$cliente = $this->cliente->get_byid($id);
				$pedido = $this->pedido->get_byid($id);
			} else {
				$this->session->set_flashdata('detalhePedido', 'Ops! Alguma coisa inesperada aconteceu com o servidor ao tentar selecionar o pedido, por favor tente novamente mais tarde!');
				redirect('pedido');
			}
			
			$cliente = $this->cliente->get_byid_singem_alegropedido($pedido->cli_codigo);
				
			$itens = $this->pedido->get_itensPedido($pedido->ped_codigo); 

			$dados = array(
					'titulo' 			=> 'Pedidos',
					'subtitulo' 		=> 'Detalhar',
					'funcionalidade' 	=> 'Detalhar Pedido',					
					'modulo'			=> 'pedido',
					'tela' 				=> 'detalharPedido',
					'pedido' 			=> json_encode($pedido),
					'itens' 			=> json_encode($itens),
					'cliente'			=> json_encode($cliente),
			);
			$this->parser->parse('index', $dados);
		}
	}
	
	public function aprovarComercial(){
		if (!is_logado()) {
			redirect('alegro/login');
		}else{
			
			$id = $this->uri->segment(3);
			
			if ( !empty($id) && is_numeric($id) ){
				$pedido = $this->pedido->do_aprovar($id, 'ped_status_comercial');
				$this->session->set_flashdata('sucesso', 'Pedido aprovado com sucesso!');
			} else {
				$this->session->set_flashdata('erro', 'Erro ao tentar aprovar pedido!');
			}
		}
		redirect('pedido/index');
	}
	
	public function negarComercial(){
		if (!is_logado()) {
			redirect('alegro/login');
		}else{
			$id = $this->uri->segment(3);
			if ( !empty($id) && is_numeric($id) ){
				$pedido = $this->pedido->do_negar($id, 'ped_status_comercial');
				$this->session->set_flashdata('sucesso', 'Pedido negado com sucesso!');
			} else {
				$this->session->set_flashdata('erro', 'Erro ao tentar negar pedido!');
			}
		}
		redirect('pedido/index');
	}
	
	public function aprovarFinanceiro(){
		if (!is_logado()) {
			redirect('alegro/login');
		}else{
			$id = $this->uri->segment(3);
			if ( !empty($id) && is_numeric($id) ){
				$pedido = $this->pedido->do_aprovar($id, 'ped_status_financeiro');
				$this->session->set_flashdata('sucesso', 'Pedido aprovado com sucesso!');
			} else {
				$this->session->set_flashdata('erro', 'Erro ao tentar aprovar pedido!');
			}
		}
		redirect('pedido/index');
	}
	
	public function negarFinanceiro(){
		if (!is_logado()) {
			redirect('alegro/login');
		}else{
			$id = $this->uri->segment(3);
			if ( !empty($id) && is_numeric($id) ){
				$pedido = $this->pedido->do_negar($id, 'ped_status_financeiro');
				$this->session->set_flashdata('sucesso', 'Pedido negado com sucesso!');
			} else {
				$this->session->set_flashdata('erro', 'Erro ao tentar negar pedido!');
			}
		}
		redirect('pedido/index');
	}
	
	public function cancelarPedido(){
		if (!is_logado()) {
			redirect('alegro/login');
		}else{
			$id = $this->uri->segment(3);
			if ( !empty($id) && is_numeric($id) ){
				$pedido = $this->pedido->do_cancelar($id, 'ped_status');
				$this->session->set_flashdata('cancelarok', 'Pedido cancelado com sucesso!');
			} else {
				$this->session->set_flashdata('cancelarok', 'Erro ao tentar cancelar pedido!');
			}
		}
		redirect('pedido/index');
	}
	
	public function excluirPedido(){
		if (!is_logado()) {
			redirect('alegro/login');
		}else{
			$id = $this->uri->segment(3);
				
			if ( !empty($id) && is_numeric($id) ){
				$pedido = $this->pedido->do_excluir($id, 'ped_excluido');
				$this->session->set_flashdata('excluirok', 'Pedido excluído com sucesso!');
			} else {
				$this->session->set_flashdata('excluirok', 'Erro ao tentar excluir pedido!');
			}
			
		}
		redirect('pedido/index');
	}
}